using System;
using System.Data;
using System.ComponentModel;
using System.Reflection;
using System.Collections.Generic;
using DataObject.Helpers;

namespace DataObject.Model
{
	[Serializable]
	public class ProviderContactDTO : DTOBase
	{
        public ProviderContactDTO()
        {
            ProviderContactID = Helper.NewSeqGuid();
        }

		#region Reference property Members

		private ContactDTO _contact = new ContactDTO();
		public ContactDTO Contact
		{
			get
			{
				return _contact;
			}
			set
			{
				if (_contact != value)
				{
					_contact = value;
				}
			}
		}
		private ProviderDTO _provider = new ProviderDTO();
		public ProviderDTO Provider
		{
			get
			{
				return _provider;
			}
			set
			{
				if (_provider != value)
				{
					_provider = value;
				}
			}
		}

		#endregion

		#region Collection Members


		#endregion

		#region Property ContactID

		private Guid _contactID;

		/// <summary>
		///  Property ContactID
		/// <summary>
		public Guid ContactID
		{
			get
			{
				return _contactID;
			}

			set
			{
				if (_contactID != value)
				{
					this.OnContactIDChanging(value);
					_contactID = value;
					this.OnContactIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property Department

		private string _department;

		/// <summary>
		///  Property Department
		/// <summary>
		public string Department
		{
			get
			{
				return _department;
			}

			set
			{
				if (_department != value)
				{
					this.OnDepartmentChanging(value);
					_department = value;
					this.OnDepartmentChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property JobTitle

		private string _jobTitle;

		/// <summary>
		///  Property JobTitle
		/// <summary>
		public string JobTitle
		{
			get
			{
				return _jobTitle;
			}

			set
			{
				if (_jobTitle != value)
				{
					this.OnJobTitleChanging(value);
					_jobTitle = value;
					this.OnJobTitleChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property ProviderContactID

		private Guid _providerContactID;

		/// <summary>
		///  Property ProviderContactID
		/// <summary>
		public Guid ProviderContactID
		{
			get
			{
				return _providerContactID;
			}

			set
			{
				if (_providerContactID != value)
				{
					this.OnProviderContactIDChanging(value);
					_providerContactID = value;
					this.OnProviderContactIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property ProviderID

		private Guid _providerID;

		/// <summary>
		///  Property ProviderID
		/// <summary>
		public Guid ProviderID
		{
			get
			{
				return _providerID;
			}

			set
			{
				if (_providerID != value)
				{
					this.OnProviderIDChanging(value);
					_providerID = value;
					this.OnProviderIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Extensibility Method Declarations

		protected virtual void OnContactIDChanging(Guid contactID) { }
		protected virtual void OnContactIDChanged() { }
		protected virtual void OnDepartmentChanging(string department) { }
		protected virtual void OnDepartmentChanged() { }
		protected virtual void OnJobTitleChanging(string jobTitle) { }
		protected virtual void OnJobTitleChanged() { }
		protected virtual void OnProviderContactIDChanging(Guid providerContactID) { }
		protected virtual void OnProviderContactIDChanged() { }
		protected virtual void OnProviderIDChanging(Guid providerID) { }
		protected virtual void OnProviderIDChanged() { }

		#endregion

	}
}
